home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 November / PCWNOV07.iso / Software / Freeware / NSIS 2.29 / nsis-2.29-setup.exe / Examples / WordFuncTest.nsi < prev   
Encoding:
Text File  |  2006-02-10  |  16.9 KB  |  646 lines

  1. ;_____________________________________________________________________________
  2. ;
  3. ;                          Word Functions Test
  4. ;_____________________________________________________________________________
  5. ;
  6. ; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
  7.  
  8. Name "Word Functions Test"
  9. OutFile "WordFuncTest.exe"
  10. Caption "$(^Name)"
  11. ShowInstDetails show
  12. XPStyle on
  13.  
  14. Var FUNCTION
  15. Var OUT
  16.  
  17. !include "WordFunc.nsh"
  18.  
  19. !insertmacro WordFind
  20. !insertmacro WordFindS
  21. !insertmacro WordFind2X
  22. !insertmacro WordFind2XS
  23. !insertmacro WordFind3X
  24. !insertmacro WordFind3XS
  25. !insertmacro WordReplace
  26. !insertmacro WordReplaceS
  27. !insertmacro WordAdd
  28. !insertmacro WordAddS
  29. !insertmacro WordInsert
  30. !insertmacro WordInsertS
  31. !insertmacro StrFilter
  32. !insertmacro StrFilterS
  33. !insertmacro VersionCompare
  34. !insertmacro VersionConvert
  35.  
  36. !insertmacro un.WordFind
  37. !insertmacro un.WordFindS
  38. !insertmacro un.WordFind2X
  39. !insertmacro un.WordFind2XS
  40. !insertmacro un.WordFind3X
  41. !insertmacro un.WordFind3XS
  42. !insertmacro un.WordReplace
  43. !insertmacro un.WordReplaceS
  44. !insertmacro un.WordAdd
  45. !insertmacro un.WordAddS
  46. !insertmacro un.WordInsert
  47. !insertmacro un.WordInsertS
  48. !insertmacro un.StrFilter
  49. !insertmacro un.StrFilterS
  50. !insertmacro un.VersionCompare
  51. !insertmacro un.VersionConvert
  52.  
  53.  
  54.  
  55. ;############### INSTALL ###############
  56.  
  57. !define StackVerificationStart `!insertmacro StackVerificationStart`
  58. !macro StackVerificationStart _FUNCTION
  59.     StrCpy $FUNCTION ${_FUNCTION}
  60.     Call StackVerificationStart
  61. !macroend
  62.  
  63. !define StackVerificationEnd `!insertmacro StackVerificationEnd`
  64. !macro StackVerificationEnd
  65.     Call StackVerificationEnd
  66. !macroend
  67.  
  68. Function StackVerificationStart
  69.     StrCpy $0 !0
  70.     StrCpy $1 !1
  71.     StrCpy $2 !2
  72.     StrCpy $3 !3
  73.     StrCpy $4 !4
  74.     StrCpy $5 !5
  75.     StrCpy $6 !6
  76.     StrCpy $7 !7
  77.     StrCpy $8 !8
  78.     StrCpy $9 !9
  79.     StrCpy $R0 !R0
  80.     StrCpy $R1 !R1
  81.     StrCpy $R2 !R2
  82.     StrCpy $R3 !R3
  83.     StrCpy $R4 !R4
  84.     StrCpy $R5 !R5
  85.     StrCpy $R6 !R6
  86.     StrCpy $R7 !R7
  87.     StrCpy $R8 !R8
  88.     StrCpy $R9 !R9
  89. FunctionEnd
  90.  
  91. Function StackVerificationEnd
  92.     IfErrors +3
  93.     DetailPrint 'PASSED $FUNCTION no errors'
  94.     goto +2
  95.     DetailPrint 'FAILED   $FUNCTION error'
  96.  
  97.     StrCmp $0 '!0' 0 error
  98.     StrCmp $1 '!1' 0 error
  99.     StrCmp $2 '!2' 0 error
  100.     StrCmp $3 '!3' 0 error
  101.     StrCmp $4 '!4' 0 error
  102.     StrCmp $5 '!5' 0 error
  103.     StrCmp $6 '!6' 0 error
  104.     StrCmp $7 '!7' 0 error
  105.     StrCmp $8 '!8' 0 error
  106.     StrCmp $9 '!9' 0 error
  107.     StrCmp $R0 '!R0' 0 error
  108.     StrCmp $R1 '!R1' 0 error
  109.     StrCmp $R2 '!R2' 0 error
  110.     StrCmp $R3 '!R3' 0 error
  111.     StrCmp $R4 '!R4' 0 error
  112.     StrCmp $R5 '!R5' 0 error
  113.     StrCmp $R6 '!R6' 0 error
  114.     StrCmp $R7 '!R7' 0 error
  115.     StrCmp $R8 '!R8' 0 error
  116.     StrCmp $R9 '!R9' 0 error
  117.     DetailPrint 'PASSED $FUNCTION stack'
  118.     goto end
  119.  
  120.     error:
  121.     DetailPrint 'FAILED   $FUNCTION stack'
  122. ;    MessageBox MB_OKCANCEL '$$0={$0}$\n$$1={$1}$\n$$2={$2}$\n$$3={$3}$\n$$4={$4}$\n$$5={$5}$\n$$6={$6}$\n$$7={$7}$\n$$8={$8}$\n$$9={$9}$\n$$R0={$R0}$\n$$R1={$R1}$\n$$R2={$R2}$\n$$R3={$R3}$\n$$R4={$R4}$\n$$R5={$R5}$\n$$R6={$R6}$\n$$R7={$R7}$\n$$R8={$R8}$\n$$R9={$R9}' IDOK +2
  123. ;    quit
  124.  
  125.     end:
  126. FunctionEnd
  127.  
  128.  
  129.  
  130. Section WordFind
  131.     ${StackVerificationStart} WordFind
  132.  
  133.     ${WordFind} '||io.sys|||Program Files|||WINDOWS' '||' '-02' $OUT
  134.     StrCmp $OUT '|Program Files' 0 error
  135.  
  136.     ${WordFind} '||io.sys||||Program Files||||WINDOWS' '||' '-2' $OUT
  137.     StrCmp $OUT 'Program Files' 0 error
  138.  
  139.     ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '-2}' $OUT
  140.     StrCmp $OUT '|logo.sys|||WINDOWS' 0 error
  141.  
  142.     ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '#' $OUT
  143.     StrCmp $OUT '3' 0 error
  144.  
  145.     ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '*' $OUT
  146.     StrCmp $OUT '2' 0 error
  147.  
  148.     ${WordFind} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|Program Files' $OUT
  149.     StrCmp $OUT '2' 0 error
  150.  
  151.     ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '+2}}' $OUT
  152.     StrCmp $OUT '|||WINDOWS' 0 error
  153.  
  154.     ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '+2{}' $OUT
  155.     StrCmp $OUT 'C:\io.sys|||WINDOWS' 0 error
  156.  
  157.     ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '+2*}' $OUT
  158.     StrCmp $OUT '|logo.sys|||WINDOWS' 0 error
  159.  
  160.     ${WordFind} 'C:\\Program Files\\NSIS\\NSIS.chm' '\' '-2{*' $OUT
  161.     StrCmp $OUT 'C:\\Program Files\\NSIS' 0 error
  162.  
  163.     ${WordFind} 'C:\io.sys|||Program Files|||WINDOWS|||' '||' '-1' $OUT
  164.     StrCmp $OUT '|' 0 error
  165.  
  166.     ${WordFind} '||C:\io.sys|||logo.sys|||WINDOWS||' '||' '-1}' $OUT
  167.     StrCmp $OUT '' 0 error
  168.  
  169.     ${WordFind} '||C:\io.sys|||logo.sys|||WINDOWS||' '||' '+1{' $OUT
  170.     StrCmp $OUT '' 0 error
  171.  
  172.     ${WordFind} 'C:\io.sys|||logo.sys' '_' 'E+1' $OUT
  173.     IfErrors 0 error
  174.     StrCmp $OUT 1 0 error
  175.  
  176.     ${WordFind} 'C:\io.sys|||logo.sys|||' '\' 'E+3' $OUT
  177.     IfErrors 0 error
  178.     StrCmp $OUT 2 0 error
  179.  
  180.     ${WordFind} 'C:\io.sys|||logo.sys' '\' 'E1' $OUT
  181.     IfErrors 0 error
  182.     StrCmp $OUT 3 0 error
  183.  
  184.     goto +2
  185.     error:
  186.     SetErrors
  187.  
  188.     ${StackVerificationEnd}
  189. SectionEnd
  190.  
  191.  
  192. Section WordFindS
  193.     ${StackVerificationStart} WordFindS
  194.  
  195.     ${WordFindS} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|PROGRAM FILES' $OUT
  196.     StrCmp $OUT 'C:\io.sys|||Program Files|||WINDOWS' 0 error
  197.  
  198.     ${WordFindS} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|Program Files' $OUT
  199.     StrCmp $OUT '2' 0 error
  200.  
  201.     goto +2
  202.     error:
  203.     SetErrors
  204.  
  205.     ${StackVerificationEnd}
  206. SectionEnd
  207.  
  208.  
  209. Section WordFind2X
  210.     ${StackVerificationStart} WordFind2X
  211.  
  212.     ${WordFind2X} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT
  213.     StrCmp $OUT 'logo.sys' 0 error
  214.  
  215.     ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1' $OUT
  216.     StrCmp $OUT 'logo' 0 error
  217.  
  218.     ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1{{' $OUT
  219.     StrCmp $OUT 'C:\WINDOWS C:\io.sys C:' 0 error
  220.  
  221.     ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1{}' $OUT
  222.     StrCmp $OUT 'C:\WINDOWS C:\io.sys C:sys' 0 error
  223.  
  224.     ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1{*' $OUT
  225.     StrCmp $OUT 'C:\WINDOWS C:\io.sys C:\logo.' 0 error
  226.  
  227.     ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/logo' $OUT
  228.     StrCmp $OUT '2' 0 error
  229.  
  230.     ${WordFind2X} '||a||b||c' '||' '||' 'E+1' $OUT
  231.     StrCmp $OUT 'a' 0 error
  232.  
  233.     ${WordFind2X} '[io.sys];[C:\logo.sys]' '\' '];' 'E+1' $OUT
  234.     IfErrors 0 error
  235.     StrCmp $OUT 1 0 error
  236.  
  237.     ${WordFind2X} '[io.sys];[C:\logo.sys]' '[' '];' 'E+2' $OUT
  238.     IfErrors 0 error
  239.     StrCmp $OUT 2 0 error
  240.  
  241.     ${WordFind2X} '[io.sys];[C:\logo.sys]' '\' '];' 'E2' $OUT
  242.     IfErrors 0 error
  243.     StrCmp $OUT 3 0 error
  244.  
  245.     goto +2
  246.     error:
  247.     SetErrors
  248.  
  249.     ${StackVerificationEnd}
  250. SectionEnd
  251.  
  252.  
  253. Section WordFind2XS
  254.     ${StackVerificationStart} WordFind2XS
  255.  
  256.     ${WordFind2XS} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/LOGO' $OUT
  257.     StrCmp $OUT 'C:\WINDOWS C:\io.sys C:\logo.sys' 0 error
  258.  
  259.     ${WordFind2XS} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/logo' $OUT
  260.     StrCmp $OUT '2' 0 error
  261.  
  262.     goto +2
  263.     error:
  264.     SetErrors
  265.  
  266.     ${StackVerificationEnd}
  267. SectionEnd
  268.  
  269.  
  270. Section WordFind3X
  271.     ${StackVerificationStart} WordFind3X
  272.  
  273.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT
  274.     StrCmp $OUT '1.AAB' 0 error
  275.  
  276.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1' $OUT
  277.     StrCmp $OUT '2.BAA' 0 error
  278.  
  279.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1{{' $OUT
  280.     StrCmp $OUT '[1.AAB];' 0 error
  281.  
  282.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1{}' $OUT
  283.     StrCmp $OUT '[1.AAB];[3.BBB];' 0 error
  284.  
  285.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1{*' $OUT
  286.     StrCmp $OUT '[1.AAB];[2.BAA];' 0 error
  287.  
  288.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.BAA' $OUT
  289.     StrCmp $OUT '2' 0 error
  290.  
  291.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'XX' '];' 'E+1' $OUT
  292.     IfErrors 0 error
  293.     StrCmp $OUT '1' 0 error
  294.  
  295.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' 'E+3' $OUT
  296.     IfErrors 0 error
  297.     StrCmp $OUT '2' 0 error
  298.  
  299.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' 'E3' $OUT
  300.     IfErrors 0 error
  301.     StrCmp $OUT '3' 0 error
  302.  
  303.     goto +2
  304.     error:
  305.     SetErrors
  306.  
  307.     ${StackVerificationEnd}
  308. SectionEnd
  309.  
  310.  
  311. Section WordFind3XS
  312.     ${StackVerificationStart} WordFind3XS
  313.  
  314.     ${WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.baa' $OUT
  315.     StrCmp $OUT '[1.AAB];[2.BAA];[3.BBB];' 0 error
  316.  
  317.     ${WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.BAA' $OUT
  318.     StrCmp $OUT '2' 0 error
  319.  
  320.     goto +2
  321.     error:
  322.     SetErrors
  323.  
  324.     ${StackVerificationEnd}
  325. SectionEnd
  326.  
  327.  
  328. Section WordReplace
  329.     ${StackVerificationStart} WordReplace
  330.  
  331.     ${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT
  332.     StrCmp $OUT 'C:\io.sys C:\logo.bmp C:\WINDOWS' 0 error
  333.  
  334.     ${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' '' '+' $OUT
  335.     StrCmp $OUT 'C:\io. C:\logo. C:\WINDOWS' 0 error
  336.  
  337.     ${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'C:\io.sys' '' '+' $OUT
  338.     StrCmp $OUT ' C:\logo.sys C:\WINDOWS' 0 error
  339.  
  340.     ${WordReplace} 'C:\io.sys      C:\logo.sys   C:\WINDOWS' ' ' ' ' '+1*' $OUT
  341.     StrCmp $OUT 'C:\io.sys C:\logo.sys   C:\WINDOWS' 0 error
  342.  
  343.     ${WordReplace} 'C:\io.sys C:\logo.sysSYSsys C:\WINDOWS' 'sys' 'bmp' '+*' $OUT
  344.     StrCmp $OUT 'C:\io.bmp C:\logo.bmp C:\WINDOWS' 0 error
  345.  
  346.     ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{' $OUT
  347.     StrCmp $OUT '||C:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 0 error
  348.  
  349.     ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '}' $OUT
  350.     StrCmp $OUT 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWS|||' 0 error
  351.  
  352.     ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}' $OUT
  353.     StrCmp $OUT '||C:\io.sys C:\logo.sys C:\WINDOWS|||' 0 error
  354.  
  355.     ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{*' $OUT
  356.     StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 0 error
  357.  
  358.     ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '}*' $OUT
  359.     StrCmp $OUT 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWS|' 0 error
  360.  
  361.     ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}*' $OUT
  362.     StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWS|' 0 error
  363.  
  364.     ${WordReplace} 'sysSYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}*' $OUT
  365.     StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWS|' 0 error
  366.  
  367.     ${WordReplace} 'C:\io.sys C:\logo.sys' '#sys' '|sys|' 'E+1' $OUT
  368.     IfErrors 0 error
  369.     StrCmp $OUT '1' 0 error
  370.  
  371.     ${WordReplace} 'C:\io.sys C:\logo.sys' '.sys' '|sys|' 'E+3' $OUT
  372.     IfErrors 0 error
  373.     StrCmp $OUT '2' 0 error
  374.  
  375.     ${WordReplace} 'C:\io.sys C:\logo.sys' '.sys' '|sys|' 'E3' $OUT
  376.     IfErrors 0 error
  377.     StrCmp $OUT '3' 0 error
  378.  
  379.     goto +2
  380.     error:
  381.     SetErrors
  382.  
  383.     ${StackVerificationEnd}
  384. SectionEnd
  385.  
  386.  
  387. Section WordReplaceS
  388.     ${StackVerificationStart} WordReplaceS
  389.  
  390.     ${WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT
  391.     StrCmp $OUT 'C:\io.sys C:\logo.sys C:\WINDOWS' 0 error
  392.  
  393.     ${WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'sys' 'bmp' '+2' $OUT
  394.     StrCmp $OUT 'C:\io.sys C:\logo.bmp C:\WINDOWS' 0 error
  395.  
  396.     goto +2
  397.     error:
  398.     SetErrors
  399.  
  400.     ${StackVerificationEnd}
  401. SectionEnd
  402.  
  403.  
  404. Section WordAdd
  405.     ${StackVerificationStart} WordAdd
  406.  
  407.     ${WordAdd} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT
  408.     StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error
  409.  
  410.     ${WordAdd} 'C:\io.sys C:\logo.sys C:\WINDOWS' ' ' '-C:\WINDOWS C:\config.sys C:\IO.SYS' $OUT
  411.     StrCmp $OUT 'C:\logo.sys' 0 error
  412.  
  413.     ${WordAdd} 'C:\io.sys' ' ' '+C:\WINDOWS C:\config.sys C:\IO.SYS' $OUT
  414.     StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error
  415.  
  416.     ${WordAdd} 'C:\io.sys C:\logo.sys C:\WINDOWS' ' ' '-C:\WINDOWS' $OUT
  417.     StrCmp $OUT 'C:\io.sys C:\logo.sys' 0 error
  418.  
  419.     ${WordAdd} 'C:\io.sys C:\logo.sys' ' ' '+C:\logo.sys' $OUT
  420.     StrCmp $OUT 'C:\io.sys C:\logo.sys' 0 error
  421.  
  422.     ${WordAdd} 'C:\io.sys C:\logo.sys' ' ' 'E-' $OUT
  423.     StrCmp $OUT 'C:\io.sys C:\logo.sys' 0 error
  424.     IfErrors error
  425.  
  426.     ${WordAdd} 'C:\io.sys C:\logo.sys' '' 'E-C:\logo.sys' $OUT
  427.     IfErrors 0 error
  428.     StrCmp $OUT '1' 0 error
  429.  
  430.     ${WordAdd} 'C:\io.sys C:\logo.sys' '' 'EC:\logo.sys' $OUT
  431.     IfErrors 0 error
  432.     StrCmp $OUT '3' 0 error
  433.  
  434.     goto +2
  435.     error:
  436.     SetErrors
  437.  
  438.     ${StackVerificationEnd}
  439. SectionEnd
  440.  
  441.  
  442. Section WordAddS
  443.     ${StackVerificationStart} WordAddS
  444.  
  445.     ${WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\windows C:\config.sys' $OUT
  446.     StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\windows C:\config.sys' 0 error
  447.  
  448.     ${WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT
  449.     StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error
  450.  
  451.     goto +2
  452.     error:
  453.     SetErrors
  454.  
  455.     ${StackVerificationEnd}
  456. SectionEnd
  457.  
  458.  
  459. Section WordInsert
  460.     ${StackVerificationStart} WordInsert
  461.  
  462.     ${WordInsert} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT
  463.     StrCmp $OUT 'C:\io.sys C:\logo.sys C:\WINDOWS' 0 error
  464.  
  465.     ${WordInsert} 'C:\io.sys' ' ' 'C:\WINDOWS' '+2' $OUT
  466.     StrCmp $OUT 'C:\io.sys C:\WINDOWS' 0 error
  467.  
  468.     ${WordInsert} '' ' ' 'C:\WINDOWS' '+1' $OUT
  469.     StrCmp $OUT 'C:\WINDOWS ' 0 error
  470.  
  471.     ${WordInsert} 'C:\io.sys C:\logo.sys' '' 'C:\logo.sys' 'E+1' $OUT
  472.     IfErrors 0 error
  473.     StrCmp $OUT '1' 0 error
  474.  
  475.     ${WordInsert} 'C:\io.sys C:\logo.sys' ' ' 'C:\logo.sys' 'E+4' $OUT
  476.     IfErrors 0 error
  477.     StrCmp $OUT '2' 0 error
  478.  
  479.     ${WordInsert} 'C:\io.sys C:\logo.sys' '' 'C:\logo.sys' 'E1' $OUT
  480.     IfErrors 0 error
  481.     StrCmp $OUT '3' 0 error
  482.  
  483.     goto +2
  484.     error:
  485.     SetErrors
  486.  
  487.     ${StackVerificationEnd}
  488. SectionEnd
  489.  
  490.  
  491. Section WordInsertS
  492.     ${StackVerificationStart} WordInsertS
  493.  
  494.     ${WordInsertS} 'C:\io.sys x C:\logo.sys' ' X ' 'C:\NTLDR' '+2' $OUT
  495.     StrCmp $OUT 'C:\io.sys x C:\logo.sys X C:\NTLDR' 0 error
  496.  
  497.     ${WordInsertS} 'C:\io.sys x C:\logo.sys' ' x ' 'C:\NTLDR' '+2' $OUT
  498.     StrCmp $OUT 'C:\io.sys x C:\NTLDR x C:\logo.sys' 0 error
  499.  
  500.     goto +2
  501.     error:
  502.     SetErrors
  503.  
  504.     ${StackVerificationEnd}
  505. SectionEnd
  506.  
  507.  
  508. Section StrFilter
  509.     ${StackVerificationStart} StrFilter
  510.  
  511.     ${StrFilter} '123abc 456DEF 7890|%#' '+' '' '' $OUT
  512.     IfErrors error
  513.     StrCmp $OUT '123ABC 456DEF 7890|%#' 0 error
  514.  
  515.     ${StrFilter} '123abc 456DEF 7890|%#' '-' 'ef' '' $OUT
  516.     IfErrors error
  517.     StrCmp $OUT '123abc 456dEF 7890|%#' 0 error
  518.  
  519.     ${StrFilter} '123abc 456DEF 7890|%#' '2' '|%' '' $OUT
  520.     IfErrors error
  521.     StrCmp $OUT 'abcDEF|%' 0 error
  522.  
  523.     ${StrFilter} '123abc 456DEF 7890|%#' '13' 'af' '4590' $OUT
  524.     IfErrors error
  525.     StrCmp $OUT '123a 6F 78|%#' 0 error
  526.  
  527.     ${StrFilter} '123abc 456DEF 7890|%#' '+12' 'b' 'def' $OUT
  528.     IfErrors error
  529.     StrCmp $OUT '123AbC4567890' 0 error
  530.  
  531.     ${StrFilter} '123abc 456DEF 7890|%#' '+12' 'b' 'def' $OUT
  532.     IfErrors error
  533.     StrCmp $OUT '123AbC4567890' 0 error
  534.  
  535.     ${StrFilter} '123abc 456DEF 7890|%#' '123' 'b' 'def' $OUT
  536.     IfErrors 0 error
  537.  
  538.     goto +2
  539.     error:
  540.     SetErrors
  541.  
  542.     ${StackVerificationEnd}
  543. SectionEnd
  544.  
  545.  
  546. Section StrFilterS
  547.     ${StackVerificationStart} StrFilterS
  548.  
  549.     ${StrFilterS} '123abc 456DEF 7890|%#' '13' 'af' '4590' $OUT
  550.     IfErrors error
  551.     StrCmp $OUT '123a 6 78|%#' 0 error
  552.  
  553.     goto +2
  554.     error:
  555.     SetErrors
  556.  
  557.     ${StackVerificationEnd}
  558. SectionEnd
  559.  
  560.  
  561. Section VersionCompare
  562.     ${StackVerificationStart} VersionCompare
  563.  
  564.     ${VersionCompare} '1.1.1.9' '1.1.1.01' $OUT
  565.     StrCmp $OUT '1' 0 error
  566.  
  567.     ${VersionCompare} '1.1.1.1' '1.1.1.10' $OUT
  568.     StrCmp $OUT '2' 0 error
  569.  
  570.     ${VersionCompare} '91.1.1.1' '101.1.1.9' $OUT
  571.     StrCmp $OUT '2' 0 error
  572.  
  573.     ${VersionCompare} '1.1.1.1' '1.1.1.1' $OUT
  574.     StrCmp $OUT '0' 0 error
  575.  
  576.     ${VersionCompare} '1.1.1.9' '1.1.1.10' $OUT
  577.     StrCmp $OUT '2' 0 error
  578.  
  579.     ${VersionCompare} '1.1.1.0' '1.1.1' $OUT
  580.     StrCmp $OUT '0' 0 error
  581.  
  582.     ${VersionCompare} '1.1.0.0' '1.1' $OUT
  583.     StrCmp $OUT '0' 0 error
  584.  
  585.     goto +2
  586.     error:
  587.     SetErrors
  588.  
  589.     ${StackVerificationEnd}
  590. SectionEnd
  591.  
  592.  
  593. Section VersionConvert
  594.     ${StackVerificationStart} VersionConvert
  595.  
  596.     ${VersionConvert} '9.0a' '' $OUT
  597.     StrCmp $OUT '9.0.01' 0 error
  598.  
  599.     ${VersionConvert} '9.0c' '' $OUT
  600.     StrCmp $OUT '9.0.03' 0 error
  601.  
  602.     ${VersionConvert} '0.15c-9m' '' $OUT
  603.     StrCmp $OUT '0.15.03.9.13' 0 error
  604.  
  605.     ${VersionConvert} '0.15c+' 'abcdefghijklmnopqrstuvwxyz+' $OUT
  606.     StrCmp $OUT '0.15.0327' 0 error
  607.  
  608.     ${VersionConvert} '0.0xa12.x.ax|.|.|x|a|.3|a.4.||5.|' '' $OUT
  609.     StrCmp $OUT '0.0.2401.12.24.0124.24.01.3.01.4.5' 0 error
  610.  
  611.     goto +2
  612.     error:
  613.     SetErrors
  614.  
  615.     ${StackVerificationEnd}
  616. SectionEnd
  617.  
  618.  
  619. Section WriteUninstaller
  620.     goto +2
  621.     WriteUninstaller '$EXEDIR\un.WordFuncTest.exe'
  622. SectionEnd
  623.  
  624.  
  625.  
  626. ;############### UNINSTALL ###############
  627.  
  628. Section un.Uninstall
  629.     ${un.WordFind} 'C:\io.sys C:\Program Files C:\WINDOWS' ' C:\' '-02' $OUT
  630.     ${un.WordFindS} 'C:\io.sys C:\Program Files C:\WINDOWS' ' C:\' '-02' $OUT
  631.     ${un.WordFind2X} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT
  632.     ${un.WordFind2XS} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT
  633.     ${un.WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT
  634.     ${un.WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT
  635.     ${un.WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT
  636.     ${un.WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT
  637.     ${un.WordAdd} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT
  638.     ${un.WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT
  639.     ${un.WordInsert} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT
  640.     ${un.WordInsertS} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT
  641.     ${un.StrFilter} '123abc 456DEF 7890|%#' '+' '' '' $OUT
  642.     ${un.StrFilterS} '123abc 456DEF 7890|%#' '+' '' '' $OUT
  643.     ${un.VersionCompare} '1.1.1.9' '1.1.1.01' $OUT
  644.     ${un.VersionConvert} '9.0a' '' $OUT
  645. SectionEnd
  646.